package n2385;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Random;
import java.util.StringTokenizer;

public class Main {

	static int T,W;
	
	static int a[]=new int[1001];
	
	static int dp[][]=new int[31][3];
	
	static int max;
	static int count;
	
	static void solve()
	{
		for(int j=0;j<=W;j++)
		{
			dp[j][1]=Integer.MIN_VALUE;
			dp[j][2]=Integer.MIN_VALUE;
		}
		dp[0][1]=0;
		//初始化结束
		
		for(int i=0;i<T;i++)
		{
			if(a[i]==1)
			{
				for(int j=0;j<=W;j++)
				{
					if(j>0&&dp[j][1]<dp[j-1][2])
					{
						dp[j][1]=dp[j-1][2]+1;
					}else if(dp[j][1]!=Integer.MIN_VALUE)
					{
						dp[j][1]++;
					}
					if(max<dp[j][1])max=dp[j][1];
				}
			}else{
				for(int j=0;j<=W;j++)
				{
					if(j>0&&dp[j][2]<dp[j-1][1])
					{
						dp[j][2]=dp[j-1][1]+1;
					}else if(dp[j][2]!=Integer.MIN_VALUE)
					{
						dp[j][2]++;
					}
					if(max<dp[j][2])max=dp[j][2];
				}
			}
		}
	}
	
	static void input()
	{
		T=1000;
		W=30;
		for(int i=0;i<T;i++)
			a[i]=new Random().nextInt(2)+1;
	}
	
	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception {

		BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st=new StringTokenizer(bf.readLine());
		T=Integer.parseInt(st.nextToken());
		W=Integer.parseInt(st.nextToken());
		for(int i=0;i<T;i++)
		{
			a[i]=Integer.parseInt(bf.readLine());
		}
		
//		input();
		solve();
		System.out.println(max);
	}

}
